package com.college.userInfo.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.college.common.pojo.ao.UserInfo;
import com.college.common.pojo.dto.userInfo.*;
import com.college.common.pojo.model.page.PageParamRequest;
import com.college.common.pojo.vo.userInfo.UserInfoLoginVO;
import com.college.common.response.CommonResult;

import java.util.List;

/**
 * <p>
 * 系统配置 服务类
 * </p>
 *
 * @author 小C工作室
 * @since 2022-05-31
 */
public interface UserInfoService extends IService<UserInfo> {

    /**
     * 获取用户信息集合
     *
     * @param queryUserInfoDTO 查询对象
     * @return 用户信息集合
     */
    List<UserInfo> queryList(QueryUserInfoDTO queryUserInfoDTO);

    /**
     * 获取用户信息集合分页
     *
     * @param queryUserInfoDTO 查询对象
     * @param pageParamRequest 分页对象
     * @return 用户信息集合
     */
    List<UserInfo> queryListPage(QueryUserInfoDTO queryUserInfoDTO, PageParamRequest pageParamRequest);

    /**
     * 新增用户信息
     *
     * @param addUserInfoDTO 新增用户信息对象
     * @return 是否成功
     */
    CommonResult<String> addUser(AddUserInfoDTO addUserInfoDTO);

    /**
     * 更新用户信息
     *
     * @param updateUserInfoDTO 更新用户信息对象
     * @return 是否成功
     */
    CommonResult<String> updateUser(UpdateUserInfoDTO updateUserInfoDTO);

    /**
     * 登录用户
     *
     * @param userInfoLoginDTO 登录用户对象
     * @return 登录对象
     */
    CommonResult<UserInfoLoginVO> login(UserInfoLoginDTO userInfoLoginDTO);

    /**
     * 公用登录逻辑
     * @param userInfo 用户对象
     * @return 用户信息
     */
    UserInfoLoginVO loginUser(UserInfo userInfo);

    /**
     * 用户注册
     * @param userInfoRegisterDTO 注册对象
     * @return 用户信息
     */
    CommonResult<String> register(UserInfoRegisterDTO userInfoRegisterDTO);

    /**
     * 更新用户密码
     * @param userInfoLoginDTO 更新对象
     * @return 是否成功
     */
    CommonResult<String> updateLoginInfo(UserInfoLoginDTO userInfoLoginDTO);
}
